POV-Ray is a team effort, and the team members use Compuserve's POV-Ray forum (GO POVRAY) to keep abreast of changes and suggestions. Before you jump in and write massive enhancements, we suggest that you contact any of the team members and get to know the guidelines. We are an easy going bunch, and very friendly and interested in helping newcomers. And who knows, we may be working on the very same features you want to add, or your enhancement may be one we're hoping to see done.
Before you publically post altered source or executables, please review the POV-Ray legal documentation for copyright restrictions and rules of distribution. POVLEGAL.DOC can be found in any of the archives. To restate our position: please contact us directly with any bug fixes or enhancements. We can then incorporate them into the next general release.
Also, be sure to read the general-purpose COMPILE.DOC, which gives some good starting information.
The Application
The executables released by the POV-Ray Team for the Mac OS were built using Metrowerks CodeWarrior 11.
The Source Directory Layout
You will find the full source code in three sub-folders in the POV-Ray Source folder. The project and make files are at the top-level of the POV-Ray Source folder. The main generic portion of POV-Ray (sometimes called the "engine") is in the SOURCE folder. This is the computer hardware/OS-independent portion of the code, and the main ray tracing core. The additional Macintosh-specific (UI and image display) source code is in the MacSource folder. I've added a small stub project that attaches a tiny 68K program to the Power Macintosh application, so that if somebody runs the Power Mac application on a 68K machine they get a reasonable error message, instead of the useless "ERROR -192 OCCURRED". This set of source is in the third sub-folder called POV368KNot (pronounced "POV3 68K? Not!") This little app should be compiled once, before the Power Macintosh application is compiled. The Power Macintosh build incorporates this 68K application stub. Note that the PPC linker will give a warning, because the pov368knot app stub already has a SIZE resource. You can manually delete this resource from the 68K stub with ResEdit if you wish.
Symantec Think C Compiler Notes
When compiling, you must use TPM C 7.0 or later for 68K, SPM C 8.0 or later for PowerMac.
Unfortunately, I got internal compiler errors while trying to compile our code under SPM 8 rel.5, and didn't have time to track down the nature of the problem, so the SPM project file "POV.SPM.ppc.proj" should work, but gets errors and doesn't compile the full application. Maybe somebody can take the time to chase this down for me. Sorry, I tried and got 99% there!
MPW C Compiler Notes
I compiled a beta version of POV-Ray 3 (68K only) months ago with ETO 18, but haven't tried recently, and haven't done an MrC build. The "POV-Ray.make" file is pretty much up-to-date, and should be pretty close to working, but I don't guarantee anything after ETO 18. The object files will be stored in the ":mpwobj:" folder, instead of being sprinkled through the source code folder, and this folder must exist before you make, since my make file doesn't try to create it ahead of time.
Metrowerks Compiler Notes
Up until CW8 there were enough compiler bugs in CodeWarrior to make this a painful process, but they all eventually got fixed (or I worked around them.) The biggest outstanding problem is that the POV-Ray team is still trying to maintain compatibility with old Unix K&R compilers, as well as use the new ANSI prototypes. It seems that CW has big problems when it runs across an ANSI function prototype, then finds the function declaration in old K&R format. It can sometimes give compiler errors (or worse, runtime errors pushing wrong size arguments on the stack!), even when everything matches up fine. It seems to happen when there are enums or 8-bit wide parameters. After several months of bug reports, Metrowerks told me that due to the nature of their parser, it is unlikely ever to be completely fixed, and for me to give up on the K&R functions :-) Well, we will, but we'll have to wait for POV-Ray 4.0, when we switch to C++ and its myriad idiosyncrasies :-)
There are CW11 projects for the Power Macintosh compile "POV.cw.PPC.prj", the 68K/FPU compile "POV.cw.68K.prj", and the 68K/nonFPU compile "POV.cw.68Knf.prj". They are independent of each other, so just load each one up and hit MAKE. They do expect the CW 11++ updates from Metrowerks, not the plain CW11. They also expect "N_4i_F_" MSL libraries, which aren't normally built for you... so you'll have to run the MSL library build script and build those special libraries first. Due to the requests of non-FPU-Mac owners out there, I have maintained the non-FPU version, which means that a fat application for everyone is not possible, so I've left them as 3 separate apps/archives. I have also just added a single CW Pro project, which I used for this latest build. CodeWarrior does not handle backwards compatibility, so if you have something earlier than CW11, you'll need to create a new project and add the files yourself. Here's a dump of the files for the PowerPC project:
Up until version 3.02, I have been writing code as generic Macintosh C code, without resorting to a company-specific application framework (MacApp, TCL, PowerPlant, etc.) This had the advantage that the POV-Ray code could be compiled by all the major compilers... but the disadvantage was it was painfully slow to develop and change user interface features (and I had to simultaneously test all project/make files.) I have decided enough is enough... it is more important to get new features out there than to support multiple compilers, and so this will be the last release in this vein. A future POV-Ray engine may be built in C++, and the user interface will follow, probably being built in PowerPlant from Metrowerks. I will be splitting POV-Ray into two parts, the engine and the UI, and the engine may still be built with any compiler, but the UI portion will require PowerPlant. This allows a lot of flexibility for the user, because we can look at letting the user choose any external powerful editor to write scene files, and we can use the rendering engine as a faceless scriptable plug-in for things like QD3D, web servers, etc. This is my dream, and I welcome dreams, thoughts and implementations from you too!
If you make any fixes to the make files, be sure to let me know. I would be interested in hearing what you did to fix them. However, PLEASE DO NOT SEND ANY LARGE FILES to me via e-mail, please check with me first. I may already have the fix, or it may take just a simple explanation. Suddenly receiving a long unsolicited file via 14.4 modem is not a happy way for me to spend my evening, besides the expensive connect time charges. I would love to keep POV-Ray up-to-date, so feel free to e-mail me and tell me about any fixes you have. We can then arrange how to get them to me.